package com.jinmdz.fmis.api.rec.model.recinfo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinmdz.fmis.common.annotation.AnValidate;
import com.jinmdz.fmis.core.base.BaseBean;
import com.jinmdz.fmis.dao.model.dictionary.DataDictionaryItem;
import com.jinmdz.fmis.dao.model.dictionary.ServiceDictionaryRuleItem;
import com.jinmdz.fmis.dao.model.dispatchcar.DispatchCar;
import com.jinmdz.fmis.dao.model.recactualitem.RecActualItem;
import com.jinmdz.fmis.dao.model.recselitem.RecSelItem;
import com.jinmdz.fmis.dao.model.user.RoleUserViewItem;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author GaoXiangLiang
 * @date 2020-6-12 12:16
 */
public class RecInfoAllLoadData extends BaseBean {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 接运二维码
     */
    private String recCode;
    /**
     * 联系人
     */
    private String contact;
    /**
     * 联系人电话
     */
    private String contactPhone;
    /**
     * 联系人类型
     */
    private Integer contactType;
    /**
     * 逝者姓名
     */
    private String deadName;
    /**
     * 死亡原因
     */
    private String deathCause;
    /**
     * 联系人与逝者关系
     */
    private Integer relationCode;

    /**
     * 联系人与逝者关系名称
     */
    private String relation;

    /**
     * 预约车型编码,字典编码[rec_info_type]
     */
    private Integer carTypeCode;
    /**
     * 预约车型,字典编码[rec_info_type]：普通车、高档灵车
     */
    private String carType;

    /**
     * 车辆用途编码，字典编码[rec_info_use]
     */
    private Integer purposeCode;
    /**
     * 车辆用途，字典编码[rec_car_use],接运遗体、送灰等
     */
    private String purpose;

    /**
     * 预约到达时间，指车辆预约到达现场时间，格式:yyyy-MM-dd HH:mm
     */
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm)
    private String arrivalTime;

    /**
     * 接运费
     */
    private BigDecimal recCharge;

    /**
     * 遗体到馆存放编码
     */
    private Integer bodyDepositCode;
    /**
     * 遗体到馆存放
     */
    private String bodyDeposit;

    /**
     * 接运地址
     */
    private String address;

    /**
     * 来源编码
     */
    private Integer sourceCode;

    /**
     * 来源
     */
    private String source;

    /**
     * 接运状态编码，字典编码[rec_task_state]
     */
    private Integer taskStateCode;

    /**
     * 接运状态
     */
    private String taskState;

    /**
     * 收费说明
     */
    private String chargeRemark;

    /**
     * 备注
     */
    private String remark;
    /**
     * 微信appId
     */
    private String appId;

    /**
     * 数据版本号，新增时传0
     */
    private Long version;

    /**
     * 接运司机ID多个
     */
    private List<Integer> recInfoDriver;
    /**
     * 抬尸工ID多个
     */
    private List<Integer> recInfoPorter;
    /**
     * 车辆调度信息
     */
    private DispatchCar dispatchCar;
    /**
     * 随车服务物品
     */
    private ArrayList<RecSelItem> recSelItem;
    /**
     * 实际使用物品
     */
    private ArrayList<RecActualItem> recActualItem;
    /**
     * 业务服务字典规则
     */
    @AnValidate(name = "业务服务字典规则")
    @ApiModelProperty(value = "业务服务字典规则", name = "ruleItems")
    private ArrayList<ServiceDictionaryRuleItem> ruleItems;
    /**
     * 服务物品，接运用，随车，实际使用
     */
    private RecInfoAllServiceItemsData serviceItems;
    /**
     * 用户组集合
     */
    @AnValidate(name = "用户组集合")
    @ApiModelProperty(value = "用户组集合", name = "users", position = 3)
    private HashMap<String, ArrayList<RoleUserViewItem>> users;
    /**
     * 字典数据
     */
    @AnValidate(name = "字典数据")
    @ApiModelProperty(value = "字典数据", name = "dicts", position = 2)
    private HashMap<String, ArrayList<DataDictionaryItem>> dicts;
    /**
     * 是否调度必填ture必填，false，调度车辆不必填
     */
    private Boolean recDispatchEnable;

    public Integer getId() {
        return id;
    }

    public RecInfoAllLoadData setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getRecCode() {
        return recCode;
    }

    public RecInfoAllLoadData setRecCode(String recCode) {
        this.recCode = recCode;
        return this;
    }

    public String getContact() {
        return contact;
    }

    public RecInfoAllLoadData setContact(String contact) {
        this.contact = contact;
        return this;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public RecInfoAllLoadData setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
        return this;
    }

    public Integer getContactType() {
        return contactType;
    }

    public RecInfoAllLoadData setContactType(Integer contactType) {
        this.contactType = contactType;
        return this;
    }

    public String getDeadName() {
        return deadName;
    }

    public RecInfoAllLoadData setDeadName(String deadName) {
        this.deadName = deadName;
        return this;
    }

    public String getDeathCause() {
        return deathCause;
    }

    public RecInfoAllLoadData setDeathCause(String deathCause) {
        this.deathCause = deathCause;
        return this;
    }

    public Integer getRelationCode() {
        return relationCode;
    }

    public RecInfoAllLoadData setRelationCode(Integer relationCode) {
        this.relationCode = relationCode;
        return this;
    }

    public String getRelation() {
        return relation;
    }

    public RecInfoAllLoadData setRelation(String relation) {
        this.relation = relation;
        return this;
    }

    public Integer getCarTypeCode() {
        return carTypeCode;
    }

    public RecInfoAllLoadData setCarTypeCode(Integer carTypeCode) {
        this.carTypeCode = carTypeCode;
        return this;
    }

    public String getCarType() {
        return carType;
    }

    public RecInfoAllLoadData setCarType(String carType) {
        this.carType = carType;
        return this;
    }

    public Integer getPurposeCode() {
        return purposeCode;
    }

    public RecInfoAllLoadData setPurposeCode(Integer purposeCode) {
        this.purposeCode = purposeCode;
        return this;
    }

    public String getPurpose() {
        return purpose;
    }

    public RecInfoAllLoadData setPurpose(String purpose) {
        this.purpose = purpose;
        return this;
    }

    public String getArrivalTime() {
        return arrivalTime;
    }

    public RecInfoAllLoadData setArrivalTime(String arrivalTime) {
        this.arrivalTime = arrivalTime;
        return this;
    }

    public BigDecimal getRecCharge() {
        return recCharge;
    }

    public RecInfoAllLoadData setRecCharge(BigDecimal recCharge) {
        this.recCharge = recCharge;
        return this;
    }

    public Integer getBodyDepositCode() {
        return bodyDepositCode;
    }

    public RecInfoAllLoadData setBodyDepositCode(Integer bodyDepositCode) {
        this.bodyDepositCode = bodyDepositCode;
        return this;
    }

    public String getBodyDeposit() {
        return bodyDeposit;
    }

    public RecInfoAllLoadData setBodyDeposit(String bodyDeposit) {
        this.bodyDeposit = bodyDeposit;
        return this;
    }

    public String getAddress() {
        return address;
    }

    public RecInfoAllLoadData setAddress(String address) {
        this.address = address;
        return this;
    }

    public Integer getSourceCode() {
        return sourceCode;
    }

    public RecInfoAllLoadData setSourceCode(Integer sourceCode) {
        this.sourceCode = sourceCode;
        return this;
    }

    public String getSource() {
        return source;
    }

    public RecInfoAllLoadData setSource(String source) {
        this.source = source;
        return this;
    }

    public Integer getTaskStateCode() {
        return taskStateCode;
    }

    public RecInfoAllLoadData setTaskStateCode(Integer taskStateCode) {
        this.taskStateCode = taskStateCode;
        return this;
    }

    public String getTaskState() {
        return taskState;
    }

    public RecInfoAllLoadData setTaskState(String taskState) {
        this.taskState = taskState;
        return this;
    }

    public String getChargeRemark() {
        return chargeRemark;
    }

    public RecInfoAllLoadData setChargeRemark(String chargeRemark) {
        this.chargeRemark = chargeRemark;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public RecInfoAllLoadData setRemark(String remark) {
        this.remark = remark;
        return this;
    }

    public Long getVersion() {
        return version;
    }

    public RecInfoAllLoadData setVersion(Long version) {
        this.version = version;
        return this;
    }

    public List<Integer> getRecInfoDriver() {
        return recInfoDriver;
    }

    public RecInfoAllLoadData setRecInfoDriver(List<Integer> recInfoDriver) {
        this.recInfoDriver = recInfoDriver;
        return this;
    }

    public List<Integer> getRecInfoPorter() {
        return recInfoPorter;
    }

    public RecInfoAllLoadData setRecInfoPorter(List<Integer> recInfoPorter) {
        this.recInfoPorter = recInfoPorter;
        return this;
    }

    public DispatchCar getDispatchCar() {
        return dispatchCar;
    }

    public RecInfoAllLoadData setDispatchCar(DispatchCar dispatchCar) {
        this.dispatchCar = dispatchCar;
        return this;
    }

    public String getAppId() {
        return appId;
    }

    public RecInfoAllLoadData setAppId(String appId) {
        this.appId = appId;
        return this;
    }

    public ArrayList<ServiceDictionaryRuleItem> getRuleItems() {
        return ruleItems;
    }

    public RecInfoAllLoadData setRuleItems(ArrayList<ServiceDictionaryRuleItem> ruleItems) {
        this.ruleItems = ruleItems;
        return this;
    }

    public RecInfoAllServiceItemsData getServiceItems() {
        return serviceItems;
    }

    public RecInfoAllLoadData setServiceItems(RecInfoAllServiceItemsData serviceItems) {
        this.serviceItems = serviceItems;
        return this;
    }

    public HashMap<String, ArrayList<RoleUserViewItem>> getUsers() {
        return users;
    }

    public RecInfoAllLoadData setUsers(HashMap<String, ArrayList<RoleUserViewItem>> users) {
        this.users = users;
        return this;
    }

    public HashMap<String, ArrayList<DataDictionaryItem>> getDicts() {
        return dicts;
    }

    public RecInfoAllLoadData setDicts(HashMap<String, ArrayList<DataDictionaryItem>> dicts) {
        this.dicts = dicts;
        return this;
    }

    public ArrayList<RecSelItem> getRecSelItem() {
        return recSelItem;
    }

    public RecInfoAllLoadData setRecSelItem(ArrayList<RecSelItem> recSelItem) {
        this.recSelItem = recSelItem;
        return this;
    }

    public ArrayList<RecActualItem> getRecActualItem() {
        return recActualItem;
    }

    public RecInfoAllLoadData setRecActualItem(ArrayList<RecActualItem> recActualItem) {
        this.recActualItem = recActualItem;
        return this;
    }

    public Boolean getRecDispatchEnable() {
        return recDispatchEnable;
    }

    public RecInfoAllLoadData setRecDispatchEnable(Boolean recDispatchEnable) {
        this.recDispatchEnable = recDispatchEnable;
        return this;
    }
}
